//#include <iostream>
//#include <thread>
//#include <mutex>
//#include <condition_variable>
//
//int main() {
//	std::mutex mtx;
//	std::condition_variable cv;
//	bool flag = true;
//
//	std::thread t1([&]() {
//		for (int i = 0; i < 10; i += 2) {
//			std::unique_lock<std::mutex> lck(mtx);
//			while (!flag) cv.wait(lck);
//			std::cout << i << " ";
//			flag = false;
//			cv.notify_one();
//		}
//	});
//
//	std::thread t2([&]() {
//		for (int i = 1; i < 10; i += 2) {
//			std::unique_lock<std::mutex> lck(mtx);
//			while (flag) cv.wait(lck);
//			std::cout << i << " ";
//			flag = true;
//			cv.notify_one();
//		}
//	});
//
//	t1.join();
//	t2.join();
//
//	return 0;
//}